A Transmission Control Protocol (TCP) proxy server acts as an intermediary between two parties, called a client and a server. The TCP proxy server forwards the data received from one or more clients to one or more servers. Similarly, it forwards the data received from one or more servers to one or more clients. It may also modify the data before forwarding it to a server or a client. The modification may include one or more of data filtering, data encryption and decryption, data compression and decompression, data authentication, data securing, and data formatting. Other functionalities of a TCP proxy server include data caching, TCP splitting and TCP multiplexing.
In order to provide reliable communication of data between a client and a server, the TCP proxy server must perform its task in a consistent manner. However, the communication between the client and the server may suffer due to occasional failure of the TCP proxy server. In order to overcome this problem TCP proxy servers are employed in pairs where one of the servers remains active and actually performs the tasks of the TCP proxy server and the other acts as a backup. In case the active server fails, the backup server takes over the tasks of the active server.
In order to implement the takeover, information related to the current states of the existing TCP connections is required. The information includes, without limitation, the sequence and acknowledgement numbers of the data packets transmitted or received by the TCP proxy server, and buffered data to be transmitted or received by the TCP proxy server. In accordance with some methods, this information is acquired periodically. However, the information is updated with every data packet transmitted or received by the TCP proxy server. Therefore, in order to implement a fully reliable takeover, the information must be acquired with every transmitted/received data packet. The process of acquiring the information with every transmitted/received packet is very costly. Therefore, most of the methods make a compromise with either the reliability or the immediacy of the takeover or the performance capacity of the proxy.
Some other methods for takeover duplicate each data packet and forward each data packet to both the active server and the backup server, so that both servers are aware of the current states of the TCP connections. Thereafter, the active server processes the data packets while the backup server discards them. However, this method of takeover is highly inefficient and puts additional burden of duplicating and forwarding to the backup server.
So, there is a need for an efficient proxy system that provides a reliable communication of data between a client and a server.